#include <conio.h>
#include <stdio.h>
#include <Windows.h>
#include <WinBase.h>
#include <string>
#include <iostream>
#include <fstream>


//
//#define MAP_FOLDER "Map\\"
//
//
////To access the first bit
//#define FIRST_BYTE_MASK						(1|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6|1<<7)
//#define GET_FIRST_BYTE(x)					((x&FIRST_BYTE_MASK))
//#define TREAT_AS_FIRST_BYTE(x)				((x&FIRST_BYTE_MASK))
//#define EX_TREAT_AS_FIRST_BYTE(x)			(TREAT_AS_FIRST_BYTE(x) & ~FIRST_BYTE_ANTI_MASK)
//
////To access the second bit
//#define SECOND_BYTE_MASK					(1<<8|1<<9|1<<10|1<<11|1<<12|1<<13|1<<14|1<<15)
//#define GET_SECOND_AS_FIRST_BYTE(x)			((x&SECOND_BYTE_MASK)>>8)
//#define TREAT_FISRT_AS_SECOND_BYTE(x)		((x<<8)&SECOND_BYTE_MASK)
//#define EX_TREAT_FIRST_AS_SECOND_BYTE(x)	(TREAT_FISRT_AS_SECOND_BYTE(x) & ~SECOND_BYTE_ANTI_MASK)
//
////To access the third bit
//#define THIRD_BYTE_MASK						(1<<16|1<<17|1<<18|1<<19|1<<20|1<<21|1<<22|1<<23)
//#define GET_THIRD_AS_FIRST_BYTE(x)			((x&THIRD_BYTE_MASK)>>16)
//#define TREAT_FISRT_AS_THIRD_BYTE(x)		((x<<16)&THIRD_BYTE_MASK)
//#define EX_TREAT_FIRST_AS_THIRD_BYTE(x)		(TREAT_FISRT_AS_THIRD_BYTE(x) & ~THIRD_BYTE_ANTI_MASK)
//
////To access the forth bit
//#define FOURTH_BYTE_MASK					(1<<24|1<<25|1<<26|1<<27|1<<28|1<<29|1<<30|1<<31)
//#define GET_FOURTH_AS_FIRST_BYTE(x)			((x&FOURTH_BYTE_MASK)>>24)
//#define TREAT_FISRT_AS_FOURTH_BYTE(x)		((x<<24)&FOURTH_BYTE_MASK)
//#define EX_TREAT_FIRST_AS_FOURTH_BYTE(x)	(TREAT_FISRT_AS_FOURTH_BYTE(x) & ~FORTH_BIT_ANTI_MASK)
//
//
//
////To access everything but the first bit
//#define FIRST_BYTE_ANTI_MASK		(SECOND_BYTE_MASK|THIRD_BYTE_MASK|FOURTH_BYTE_MASK)
//
////To access everything but the first bit
//#define SECOND_BYTE_ANTI_MASK		(FIRST_BYTE_MASK|THIRD_BYTE_MASK|FOURTH_BYTE_MASK)
//
////To access everything but the first bit
//#define THIRD_BYTE_ANTI_MASK		(FIRST_BYTE_MASK|SECOND_BYTE_MASK|FOURTH_BYTE_MASK)
//
////To access everything but the first bit
//#define FOURTH_BYTE_ANTI_MASK		(FIRST_BYTE_MASK|SECOND_BYTE_MASK|THIRD_BYTE_MASK)


//enum NDir {
//	START,
//	NORTH,
//	EAST,
//	SOUTH,
//	WEST,
//	RESET
//};
//void MoveCursor(int x,int y);
//class WalkingCursor {
//public:
//	WalkingCursor():x(0),y(0),Dir(START+1),Move(1),yRange(1),MaxMove(1),Stop(false){}
//	int x,y;
//	int Dir;
//	int Move;
//	int yRange;
//	int MaxMove;
//	int yMax;
//	bool Stop;
//	int itterator;
//	virtual void Init(int a_xP,int a_yP,int a_MaxMove,int a_yRange) {
//		x = a_xP;
//		y = a_yP;
//		MaxMove = a_MaxMove;
//		itterator = 0;
//		yRange = a_yRange;
//		yMax = a_yP + MaxMove / 2;
//	}
//	void Walk() {
//		//Prints all the pixels in a circular method around it
//		WalksinDir();
//	}
//	virtual void WalksinDir() {
//		static int Change = 0;
//		
//		if(itterator++ >= Move) {
//			itterator -= Move;
//			if(Dir++ == RESET-1) {
//				Dir = START+1;
//			}
//			if(Change++ == 1) {
//				Move++;
//				Change = 0;
//			}
//		}
//
//		
//
//		Step();
//		if(Move == MaxMove && itterator == MaxMove)
//		{
//			Stop = true;
//		}
//	}
//
//	void Step() {
//		switch(Dir) {
//		case NORTH:
//			y--;
//			break;
//		case SOUTH:
//			y++;
//			break;
//		case EAST:
//			x++;
//			break;
//		case WEST:
//			x--;
//			break;
//		default:	break;
//		}
//	}
//	void DoTask() {
//		Sleep(10);
//		if(x >= 0 && y >= 0) {
//			MoveCursor(x,y);
//			printf("x");
//		}
//	}
//	bool InBounds() {
//		if( y < yMax - yRange && y >= yMax - MaxMove + yRange ) {
//			return true;
//		}
//		return false;
//	}
//};
//
//class RWalkingCursor : public WalkingCursor {
//public:
//	bool NextTurn;
//	RWalkingCursor():WalkingCursor(),NextTurn(false){}
//	void Init(int a_xP,int a_yP,int a_MaxMove,int a_yRange) {
//		x = a_xP - a_MaxMove / 2;
//		y = a_yP + a_MaxMove / 2;
//		MaxMove = a_MaxMove;
//		Move = a_MaxMove;
//		yRange = a_yRange;
//		itterator = 0;
//		yMax = a_yP + MaxMove / 2;
//	}
//	virtual void WalksinDir() {
//		static int Change = 0;
//		
//		if(++itterator > Move) {
//			itterator = 1;
//			if(Dir++ == RESET-1) {
//				Dir = START+1;
//			}
//			if(Change++ == 1) {
//				Move--;
//				Change = 0;
//			}
//		}
//
//		Step();
//
//		
//		if(NextTurn){
//			Stop = true;return;
//		}
//		if(Move == 1 && itterator == 1)
//		{
//			NextTurn = true;
//		}
//	}
//};
//
//int main(int argc, char ** argv) {
//	//Uncomment for forward walking
//	//WalkingPixel WP;
//	//Uncomment for reverse walking
//	RWalkingCursor WP;
//	//28 = 14 on top and bottom
//	int i = 10;
//	WP.Init(10,10,i,0);
//	
//	while(!WP.Stop) {
//		
//		WP.Walk();
//		if(WP.InBounds())
//			WP.DoTask();
//		
//		//printf("%i,%i",WP.x,WP.y);
//	}
//
//	_getch();
//	return 0;
//}
//
//void MoveCursor(int x,int y) {
//	COORD C;C.X = x;C.Y = y;
//	SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),C);
//}



void main() {
	std::ofstream out;
	out.open("Test.txt");
	out << "100 99#";
	out.close();
	
	char * File;
	char * File2 = new char[256];
	char * File3 = new char[256];
	File3 = $(SolutionDir);
	//SHFILEOPSTRUCT sf;
	//memset(&sf,0,sizeof(sf));
	/*sf.hwnd = 0;

	File = "Folder1";
	sprintf(File2,"%s\\Preloaded",File);
	sf.pFrom = File2;
	sf.fFlags = FOF_NOCONFIRMATION | FOF_NOCONFIRMMKDIR | FOF_NOERRORUI;
	SHFileOperation(&sf);*/
	File = "Folder1";
	sprintf_s(File2,256,"%s\\Preloaded",File);
	//GetFilesAttributes(File2);
	 WIN32_FIND_DATA FindFileData;
	HANDLE H = FindFirstFile(File2,FindFileData);
	CloseHandle(H);
	DWORD D;
	D = GetFileAttributesA(File2);
	SetFileAttributes( File2, D & ~FILE_ATTRIBUTE_READONLY);
	BOOL B = DeleteFile(File2);
	D = GetLastError();
	/*memset(&sf,0,sizeof(sf));
	sf.hwnd = 0;
	sf.wFunc = FO_COPY;
	File = "Folder1\\Map";
	sf.pFrom = File;	
	sf.pTo = File2;
	sf.fFlags = FOF_NOCONFIRMATION | FOF_NOCONFIRMMKDIR | FOF_NOERRORUI;
	SHFileOperation(&sf);*/

	/*ifstream in;
	string buffer;
	in.open("Test.txt");
	getline(in,buffer,'#');
	int i = atoi(buffer.c_str());
	printf(buffer.c_str());*/
	printf("Completed!");
	_getch();
}